package com.yixing.tech.wcs.service;

import com.yixing.tech.common.autoline.domain.*;
import com.yixing.tech.common.hikservice.rcs.RCSTaskCallback;

import java.util.List;

/**
 * 回调服务接口
 * 处理来自硬件设备和上层系统的回调通知，包括任务状态更新、光栅控制等
 */
public interface ICallbackService {


    /** WCS完成任务通知回调
     * 返回列表
     *
     * */
    Object wcsTaskFinish(List<TaskFinishReq> taskFinishReqList);

    /** WCS获取新的任务货位
     * 返回库位对象
     * */
    Object newLocationGet(GetNewLocationReq getNewLocationReq);

    /** WCS取消任务通知回调
     * 返回列表
     * */
    Object wcsTaskCancel(List<TaskCancelReq> taskCancelReqList);

    /** WCS任务故障上报
     * 双重入库 取货无箱 放深浅有 取深浅有 */
    Object wcsTaskError(TaskErrorReq taskErrorReq);

    /** WCS通知光栅打开/关闭完成 */
    void wcsAgvRasterReqFinish(AgvRasterResult agvRasterResult);

    /** RCS任务执行回调 */
    void rcsTaskCallback(RCSTaskCallback rcsTaskCallback);

//    /**
//     * 处理任务回调
//     * 处理由硬件设备或上层系统发出的任务状态回调
//     * @param callbackVO 回调数据对象
//     * @throws Exception 异常
//     */
//    void handleTaskCallback(WCSTaskCallbackVO callbackVO) throws Exception;
//
//    /**
//     * 处理子任务回调
//     * 处理子任务的执行状态回调，更新系统状态
//     * @param subTask 子任务对象
//     * @param action 操作类型
//     * @throws Exception 异常
//     */
//    void handleSubTaskCallback(SubTask subTask, String action) throws Exception;
//
//    /**
//     * 处理AGV光栅请求
//     * 处理AGV车辆的光栅控制请求（开关光栅）
//     * @param request 光栅请求对象
//     * @throws Exception 异常
//     */
//    void handleAGVRasterRequest(AGVRasterRequest request) throws Exception;
}
